iT邦幫忙

2023 iThome 鐵人賽

DAY 13
0

影片教學

Yes

主要內容

繼承是一個重要的程式設計概念,它允許智能合約重複使用和擴展現有的合約代碼,以減少代碼的冗余。繼承機制使得合約可以建立在已有合約的基礎上,實現代碼的複用和分層設計。

virtual 和 override 關鍵字
如果你希望子合約能夠重寫父合約中的函數,你需要在父合約中使用 virtual 關鍵字來標記該函數。而在子合約中,如果你要重寫父合約的函數,需要使用 override 關鍵字。

1.簡單繼承

繼承非常直觀,可以通過使用 is 關鍵字來實現。例如,contract 子合約 is 父合約 表示子合約繼承了父合約的功能。子合約可以繼承父合約的函數、狀態變數等。

2.多重繼承

Solidity 支持多重繼承,這意味著一個合約可以同時繼承多個父合約。需要注意的是,在繼承多個合約時,應按照從輩分最高到最低的順序排列合約名,並確保重寫在子合約中正確實現。

3.修飾器的繼承

修飾器也可以繼承,使用 virtual 和 override 關鍵字可以繼承修飾器,使其能夠在子合約中進行修改。

4.構造函數的繼承

子合約可以繼承父合約的構造函數。有兩種方式可以實現
1.在繼承聲明中傳遞構造函數的參數。
2.在子合約的構造函數中聲明參數,這樣可以確保子合約初始化時也會執行父合約的構造函數。

5.調用父合約函數

子合約可以通過直接調用父合約的函數來訪問其功能。這可以通過使用父合約名稱,例如 父合約.函數名() 來實現。此外,也可以使用 super 關鍵字來調用最近的父合約的函數。

6.鑽石繼承

鑽石繼承是一種多重繼承鏈的情況,即子合約同時有兩個或兩個以上的基類。在多重繼承鏈上使用 super 關鍵字時需要注意,它會依次調用繼承鏈上的每個合約的相關函數,確保正確的順序和邏輯。

相關連結

WTF Solidity Inheritance
Solidity Develop 繼承


上一篇
Solidity 入門走到飛🚀-【Day12】事件 - event
下一篇
Solidity 入門走到飛🚀-【Day14】抽象合約 & 接口
系列文
30天讓你從【零基礎】掌握智能合約 Solidity 入門走到飛30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言